#ifndef _RENZO_TEXTURE_MANAGER_
#define _RENZO_TEXTURE_MANAGER_

#include "RenzoMustHave.h"

namespace Renzo
{
class RENZODERER_API TextureManager
{
public:
	TextureManager(void);
	virtual ~TextureManager(void);

public:
	/**
	@description
	TextureManager manages the input texture object pointer. Do not release this pointer elsewhere.
	*/
	virtual Texture* createTexture(Image* i);

	/**
	@description
	Bind this texture to the render context
	*/
	virtual void bindTexture(Texture* t) = 0;

protected:
	/**
	@description
	Generate a unique texture ID
	*/
	TexID genTexID();
	
protected:
	typedef std::map<ResourceID, Texture*> TextureList;
	TextureList textures;	

	int maxTexID;

public:
	friend class Texture;
};
}

#endif